/*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://www.sun.com/
*
* The Original Code is Forte for Java, Community Edition. The Initial
* Developer of the Original Code is Sun Microsystems, Inc. Portions
* Copyright 1997-2000 Sun Microsystems, Inc. All Rights Reserved.
*/
package org.netbeans.examples.modules.minicomposer;
import java.io.IOException;
import org.openide.TopManager;
import org.openide.compiler.Compiler;
import org.openide.compiler.CompilerJob;
import org.openide.cookies.CompilerCookie;
import org.openide.cookies.SaveCookie;
public abstract class ScoreCompilerSupport implements CompilerCookie {
private ScoreDataObject obj;
protected ScoreCompilerSupport (ScoreDataObject obj) {
this.obj = obj;
}
protected boolean saveFirst () {
if (obj.isModified ()) {
SaveCookie save = (SaveCookie) obj.getCookie (SaveCookie.class);
if (save != null) {
try {
save.save ();
} catch (IOException ioe) {
TopManager.getDefault ().notifyException (ioe);
return false;
}
}
}
return true;
}
public boolean isDepthSupported (Compiler.Depth depth) {
return true;
}
public abstract void addToJob (CompilerJob job, Compiler.Depth depth);
public static class Compile extends ScoreCompilerSupport implements CompilerCookie.Compile {
public Compile (ScoreDataObject obj) {
super (obj);
}
public void addToJob (CompilerJob job, Compiler.Depth depth) {
if (this.saveFirst ())
job.add (new SampledAudioCompiler (this.obj.getPrimaryFile (), false));
}
}
public static class Build extends ScoreCompilerSupport implements CompilerCookie.Build {
public Build (ScoreDataObject obj) {
super (obj);
}
public void addToJob (CompilerJob job, Compiler.Depth depth) {
if (this.saveFirst ())
job.add (new SampledAudioCompiler (this.obj.getPrimaryFile (), true));
}
}
public static class Clean extends ScoreCompilerSupport implements CompilerCookie.Clean {
public Clean (ScoreDataObject obj) {
super (obj);
}
public void addToJob (CompilerJob job, Compiler.Depth depth) {
job.add (new SampledAudioCleaner (this.obj.getPrimaryFile ()));
}
}
}